﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class ЗаказыНаПроизводствоИПереработку
	{
		//Функция возвращает значение Подразделения, которое определяется из рабочего центра, указанного для выходного изделия
		//	в спецификации.
		//Вызывается из документов ЗаказНАПроизводство, КорректировкаЗаказаНаПроизводство

		public object ПолучитьПодразделениеИзСпецификации(/*Спецификация,Номенклатура,ХарактеристикаНоменклатуры*/)
		{
			if(true/*не ЗначениеЗаполнено(Спецификация)*/)
			{
			}
			//Запрос = новый Запрос;
			/*Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|Подразделение
	|ИЗ (
	|	ВЫБРАТЬ 
	|		1 КАК Приоритет,
	|		ТочкаМаршрута.Подразделение КАК Подразделение
	|	ИЗ Справочник.СпецификацииНоменклатуры.ВыходныеИзделия
	|	ГДЕ Ссылка = &Спецификация
	|		И Номенклатура = &Номенклатура И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
	|	ОБЪЕДИНИТЬ ВСЕ
	|	ВЫБРАТЬ
	|		2 КАК Приоритет,
	|		ТочкаМаршрута.Подразделение КАК Подразделение
	|	ИЗ Справочник.СпецификацииНоменклатуры.ВыходныеИзделия
	|	ГДЕ Ссылка = &Спецификация
	|		И Номенклатура = &Номенклатура 
	|	) КАК ДанныеСпецификации
	|
    |УПОРЯДОЧИТЬ ПО Приоритет";*/
			//Запрос.УстановитьПараметр("Спецификация",Спецификация);
			//Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
			//Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры",ХарактеристикаНоменклатуры);
			//Выборка = Запрос.Выполнить().Выбрать();
			if(true/*Выборка.Следующий()*/)
			{
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ЗАПОЛНЕНИЯ ТАБЛИЧНЫХ ЧАСТЕЙ ДОКУМЕНТОВ
		// Процедура заполнения документа ЗаказПоставщику по заказу на производство
		//	Вызывается из формы документа ЗаказПоставщику
		//Заполняет переданную табличную часть по остаткам
		//
		// Параметры:
		//  ДокументОбъект - заполняемый документ
		//  ТабличнаяЧасть  - табличная часть документа.
		//	ЗаказНаПроизводство - заказ по которому производится заполнение
		// 	Очистить		- очистить предварительно ТЧ или добавить в конец
		//

		public void ЗаполнитьЗаказПоставщикуПоЗаказуНаПроизводство(/*ДокументОбъект, ТабличнаяЧасть, Очистить = Истина*/)
		{
			//ФормаЗаказы = Документы.ЗаказНаПроизводство.ПолучитьФормуВыбора();
			//ФормаЗаказы.Заголовок = "Выберите заказ на производство для заполнения заказа поставщику";
			//ФормаЗаказы.РежимВыбора = Истина;
			//ЗаказНаПроизводство = ФормаЗаказы.ОткрытьМодально();
			if(true/*НЕ ЗначениеЗаполнено(ЗаказНаПроизводство)*/)
			{
			}
			if(true/*Очистить И ТабличнаяЧасть.Количество() > 0*/)
			{
				//ТекстВопроса = "Перед заполнением табличная часть будет очищена. Заполнить?";
				//Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да,);
				if(true/*Ответ <> КодВозвратаДиалога.Да*/)
				{
				}
				//ТабличнаяЧасть.Очистить();
			}
			/*//Собственно заполнение табличной части
*/
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ЗаказНаПроизводство", ЗаказНаПроизводство);
			if(true/*ДокументОбъект.ВидОперации = Перечисления.ВидыОперацийЗаказПоставщику.ПокупкаКомиссия*/)
			{
				//Запрос.УстановитьПараметр("ВидВоспроизводства", Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка);
			}
			/*Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗаказНаПроизводствоМатериалы.Номенклатура,
	|	ЗаказНаПроизводствоМатериалы.ХарактеристикаНоменклатуры,
	|	ЗаказНаПроизводствоМатериалы.ЕдиницаИзмерения,
	|	ЗаказНаПроизводствоМатериалы.Количество * ЗаказНаПроизводствоМатериалы.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказНаПроизводствоМатериалы.ЕдиницаИзмерения.Коэффициент КАК Количество,
	|	ЗаказНаПроизводствоМатериалы.Номенклатура.СтавкаНДС КАК СтавкаНДС,
	|	ЗаказНаПроизводствоМатериалы.Коэффициент,
	|	ЗаказНаПроизводствоМатериалы.КоличествоМест,
	|	ЗаказНаПроизводствоМатериалы.ЕдиницаИзмеренияМест,
	|	&ЗаказНаПроизводство КАК Заказ
	|ИЗ
	|	Документ.ЗаказНаПроизводство.Материалы КАК ЗаказНаПроизводствоМатериалы
	|ГДЕ
	|	ЗаказНаПроизводствоМатериалы.Ссылка = &ЗаказНаПроизводство
	|	И ЗаказНаПроизводствоМатериалы.Размещение = НЕОПРЕДЕЛЕНО
	|	И ЗаказНаПроизводствоМатериалы.ВидВоспроизводства = &ВидВоспроизводства";*/
			//Выборка = Запрос.Выполнить().Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				//СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
				//ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, Выборка);
			}
			/*// Получить нужные цены запросом
*/
			//НовыйВалютаДокумента    = ДокументОбъект.ВалютаДокумента;
			//СтруктураКурса          = МодульВалютногоУчета.ПолучитьКурсВалюты(НовыйВалютаДокумента, ДокументОбъект.Дата);
			//НовыйКурсДокумента      = СтруктураКурса.Курс;
			//НовыйКратностьДокумента = СтруктураКурса.Кратность;
			//СтруктураЗначенийЦен = Новый Структура;
			//СтруктураЗначенийЦен.Вставить("ПерезаполнитьПроцентСкидкиНаценки", Ложь);
			//СтруктураЗначенийЦен.Вставить("НовыйТипЦен",                       ДокументОбъект.ТипЦен);
			//СтруктураЗначенийЦен.Вставить("НовыйВалютаДокумента",              НовыйВалютаДокумента);
			//СтруктураЗначенийЦен.Вставить("НовыйКурсДокумента",                НовыйКурсДокумента);
			//СтруктураЗначенийЦен.Вставить("НовыйКратностьДокумента",           НовыйКратностьДокумента);
			//СтруктураЗначенийЦен.Вставить("ТекущийВалютаДокумента",            ДокументОбъект.ВалютаДокумента);
			//СтруктураЗначенийЦен.Вставить("НовыйУчитыватьНДС",                 ДокументОбъект.УчитыватьНДС);
			//СтруктураЗначенийЦен.Вставить("НовыйСуммаВключаетНДС",             ДокументОбъект.СуммаВключаетНДС);
			//СтруктураЗначенийЦен.Вставить("ЕстьСтавкаНДСВТабличнойЧасти",      Истина);
			/*РезультатЗапросаЦен = Ценообразование.СформироватьЗапросПоЦенам(СтруктураЗначенийЦен, 
	                                                Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатурыКонтрагентов, 
	                                                ТабличнаяЧасть.ВыгрузитьКолонку("Номенклатура"),
	                                                ДокументОбъект.Дата, ДокументОбъект.Контрагент, ДокументОбъект.ДоговорКонтрагента);*/
			//ВыборкаРезультатЗапросаЦен = РезультатЗапросаЦен.Выбрать();
		}
		// ЗаполнитьТабличнуюЧастьПоЗаказуНаПроизводство()
		// Процедура выполняет заполниение табличной части документа ТребованиеНакладная материалами, зарезервированными под заказ на производство.
		//

		public void ЗаполнитьТребованиеНакладнаяПоРезервамЗаказаНаПроизводство(/*ДокументОбъект, ЗаказНаПроизводство*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Заказ", ЗаказНаПроизводство);
			//Запрос.УстановитьПараметр("ДатаОстатков", ОбщегоНазначения.ПолучитьДатуОстатков(ДокументОбъект));
			//Запрос.УстановитьПараметр("Склад", ДокументОбъект.Склад);
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Остатки.Номенклатура										КАК Номенклатура,
	|	Остатки.Номенклатура.ЕдиницаХраненияОстатков				КАК ЕдиницаИзмерения,
	|	Остатки.Номенклатура.ЕдиницаХраненияОстатков				КАК ЕдиницаИзмеренияМест,
	|	Остатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент 	КАК Коэффициент,
	|	Остатки.ХарактеристикаНоменклатуры							КАК ХарактеристикаНоменклатуры,
	|	Остатки.СерияНоменклатуры									КАК СерияНоменклатуры,
	|	Остатки.Номенклатура.СтатьяЗатрат							КАК СтатьяЗатрат,
	|	Остатки.Номенклатура.НоменклатурнаяГруппаЗатрат				КАК НоменклатурнаяГруппа,
	|	Остатки.Склад												КАК Склад,
	|	Остатки.ДокументРезерва                                     КАК ЗаказРезерв,
	|	ЗаказНаПроизводство.Количество								КАК КоличествоДокумент,
	|	МАКСИМУМ(Остатки.КоличествоОстаток)							КАК КоличествоРезерв
	|ИЗ
	|	РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков,
	|		ДокументРезерва = &Заказ
	|		И Склад = &Склад) КАК Остатки
	|	
	|	ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
	|		ВЫБРАТЬ
	|			ЗаказНаПроизводство.Номенклатура,
	|			ЗаказНаПроизводство.ХарактеристикаНоменклатуры,
	|			СУММА(Количество * Коэффициент / Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК Количество
	|		ИЗ
	|			Документ.ЗаказНаПроизводство.Материалы КАК ЗаказНаПроизводство
	|		ГДЕ
	|			ЗаказНаПроизводство.Ссылка = &Заказ
	|			И Не ЗаказНаПроизводство.Номенклатура.Услуга
	|		СГРУППИРОВАТЬ ПО
	|			ЗаказНаПроизводство.Номенклатура,
	|			ЗаказНаПроизводство.ХарактеристикаНоменклатуры
	|		) КАК ЗаказНаПроизводство
	|	ПО
	|		Остатки.Номенклатура 					= ЗаказНаПроизводство.Номенклатура
	|		И Остатки.ХарактеристикаНоменклатуры 	= ЗаказНаПроизводство.ХарактеристикаНоменклатуры
	|
	|ГДЕ 
	|   НЕ Остатки.Номенклатура.Услуга
	|
	|СГРУППИРОВАТЬ ПО
	|	Остатки.Номенклатура,
	|	Остатки.ХарактеристикаНоменклатуры,
	|	Остатки.СерияНоменклатуры,
	|	Остатки.Склад,
	|	Остатки.ДокументРезерва,
	|	ЗаказНаПроизводство.Количество
	|	
	|УПОРЯДОЧИТЬ ПО
	|	Остатки.Номенклатура
	|	
	|ИТОГИ ПО
	|	Остатки.Номенклатура,
	|	Остатки.ХарактеристикаНоменклатуры,
	|	Остатки.СерияНоменклатуры,
	|	Остатки.Склад
	|";*/
			//РезультатЗапроса = Запрос.Выполнить();
			//ОбходПоНоменклатуре = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ОбходПоНоменклатуре.Следующий()*/)
			{
				//ОбходПоХарактеристике = ОбходПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ОбходПоХарактеристике.Следующий()*/)
				{
					//ОбходПоСерии = ОбходПоХарактеристике.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					while(true/*ОбходПоСерии.Следующий()*/)
					{
						//ОбходПоСкладу = ОбходПоСерии.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
						while(true/*ОбходПоСкладу.Следующий()*/)
						{
							//КоличествоРезерв = ОбходПоСкладу.КоличествоРезерв;
							//Обход = ОбходПоСкладу.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
							while(true/*Обход.Следующий()*/)
							{
								//КоличествоДокумент = Обход.КоличествоДокумент;
								//СтрокаТабличнойЧасти = ДокументОбъект.Материалы.Добавить();
								//ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, Обход);
								if(true/*КоличествоРезерв > КоличествоДокумент*/)
								{
									//СтрокаТабличнойЧасти.Количество = КоличествоДокумент;
									//КоличествоРезерв = КоличествоРезерв - КоличествоДокумент;
								}
								//СтрокаТабличнойЧасти.Качество						= Справочники.Качество.Новый;
								//СтрокаТабличнойЧасти.ОтражениеВУСН					= Перечисления.ОтражениеВУСН.Принимаются;
								if(true/*КоличествоРезерв = 0*/)
								{
								}
							}
							//;;
						}
						//;;
					}
					//;;
				}
				//;;
			}
			/*;
	СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаТабличнойЧасти("Материалы", ДокументОбъект.Материалы, ДокументОбъект, ДокументОбъект.ОтражатьВБухгалтерскомУчете, ДокументОбъект.ОтражатьВНалоговомУчете, истина, истина);*/
		}
		// ЗаполнитьТребованиеНакладнаяПоОстаткамВРезерве()
		//Процедура заполняет документ ТребованиеНакладная по заказу покупателя на переработку

		public void ЗаполнитьТребованиеНакладнаяПоЗаказуПокупателяПереработка(/*ДокументОбъект, ЗаказПокупателя*/)
		{
			//ДокументОбъект.Материалы.Очистить();
			/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	РегЗаказы.Номенклатура                 КАК Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры   КАК ХарактеристикаНоменклатуры,
	|	РегЗаказы.Цена                         КАК Цена,
	|	РегЗаказы.СтавкаНДС       			   КАК СтавкаНДС,
	|	РегЗаказы.ЕдиницаИзмерения             КАК ЕдиницаИзмерения,
	|	РегЗаказы.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
	|	СУММА(РегЗаказы.КоличествоОстаток)     КАК КолОстаток,
	|	СУММА(ЕСТЬNULL(РегТоварыВРезерве.КоличествоОстаток, 0))   КАК КолРезерв
	|ИЗ
	|	РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонДата, ДоговорКонтрагента = &Договор 
	|	                                                    И ЗаказПоставщику = &Заказ 
	|	                                                    И Не Номенклатура.Услуга
	|	                                                    И СтатусПартии = &Статус) КАК РегЗаказы
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&КонДата, ДокументРезерва = &Заказ и Склад=&Склад) КАК РегТоварыВРезерве
	|		ПО РегЗаказы.Номенклатура               = РегТоварыВРезерве.Номенклатура
	|		 И РегЗаказы.ХарактеристикаНоменклатуры = РегТоварыВРезерве.ХарактеристикаНоменклатуры
	|
	|СГРУППИРОВАТЬ ПО
	|	РегЗаказы.Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры,
	|	РегЗаказы.Цена,
	|	РегЗаказы.СтавкаНДС,
	|	РегЗаказы.ЕдиницаИзмерения
	|";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата",   ОбщегоНазначения.ПолучитьДатуОстатков(ДокументОбъект));
			//Запрос.УстановитьПараметр( "Заказ",     ЗаказПокупателя);
			//Запрос.УстановитьПараметр( "Договор",   ЗаказПокупателя.ДоговорКонтрагента);
			//Запрос.УстановитьПараметр( "Статус",    Перечисления.СтатусыПартийТоваров.ВПереработку);
			//Запрос.УстановитьПараметр( "ТоварТара", Перечисления.ТоварТара.Товар);
			//Запрос.УстановитьПараметр( "Склад",    	ДокументОбъект.Склад);
			//ТабОстатки = Запрос.Выполнить().Выгрузить();
			//СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаТабличнойЧасти("Материалы", ДокументОбъект.Материалы, ДокументОбъект, ДокументОбъект.ОтражатьВБухгалтерскомУчете, ДокументОбъект.ОтражатьВНалоговомУчете, Истина, Истина);
		}
		//Процедура заполняет документ ТребованиеНакладная по потребностям заказа на производство

		public void ЗаполнитьТребованиеНакладнаяПотребностямиЗаказаНаПроизводство(/*ДокументОбъект, ЗаказНаПроизводство*/)
		{
			//ДопПараметры = Новый Структура;
			//ДопПараметры.Вставить("ЗаказРезерв",          "ЗаказРезерв");
			//ДопПараметры.Вставить("Склад",                ДокументОбъект.Склад);
			//ЗаказыНаПроизводствоИПереработку.ЗаполнитьТабличнуюЧастьПоПотребностямЗаказаНаПроизводство(ДокументОбъект.Материалы, ЗаказНаПроизводство, ДопПараметры);
			//ДокументОбъект.Материалы.Свернуть("Номенклатура, ХарактеристикаНоменклатуры,ЕдиницаИзмерения,Качество,Заказ,ЗаказРезерв,Коэффициент","Количество");
			//СчетаУчетаВДокументах.ЗаполнитьСчетаУчетаТабличнойЧасти("Материалы", ДокументОбъект.Материалы, ДокументОбъект, ДокументОбъект.ОтражатьВБухгалтерскомУчете, ДокументОбъект.ОтражатьВНалоговомУчете, Истина, Истина);
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С ПОТРЕБНОСТЯМИ ЗАКАЗОВ НА ПРОИЗВОДСТВО
		// Функция создает строку с сообщением о нехватке остатка при проведении
		//

		public object СоздатьСтрокуСообщения(/*Обход*/)
		{
			/*Стр = " - По документу: "        + Обход.КолДокументЕдиницыДокумента + " Потребность: " + Обход.КолПотребностиЕдиницыДокумента + " Превышение: " + (Обход.КолДокументЕдиницыДокумента - Обход.КолПотребностиЕдиницыДокумента) +
		  "  (Материал: """          + СокрЛП(Обход.НоменклатураПред)         + ?( Обход.НоменклатураВестиУчетПоХарактеристикам, """ Хар-ка материала: """ + СокрЛП(Обход.ХарактеристикаНоменклатурыПред) + """", "") +
		     						 """ Ед. изм: """ + СокрЛП(Обход.ЕдиницаИзмеренияПред)  + 
		  """ Продукция: """         + СокрЛП(Обход.ПродукцияПред)            + ?( Обход.ПродукцияВестиУчетПоХарактеристикам, """ Хар-ка продукции: """ + СокрЛП(Обход.ХарактеристикаПродукцииПред) + """", "") +
		  """ Спецификация: """ + СокрЛП(Обход.СпецификацияПред) + """)";*/
			return null;
		}
		// СоздатьСтрокуСообщения()
		// Закрывает потребности на производство по данным табличной части РаспределениеМатериалов
		// Вызывается при автоматическом закрытии потребностей

		public void ВыполнитьПогашениеПотребностиЗаказаНаПроизводствоПоРаспределению(/*ДокОбъект, ВидДокумента, ИмяРеквизитаЗаказ, СтруктураШапкиДокумента, ИмяТабличнойЧастиПродукция*/)
		{
			//НаборДвижений    = ДокОбъект.Движения.ПотребностиЗаказовНаПроизводство;
			//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
			/*//Запрос по табличной части документа для формирования временной таблицы
*/
			if(true/*ВидДокумента = "КомплектацияНоменклатуры"*/)
			{
				//МассивЗаказов = новый Массив;
				//МассивЗаказов.Добавить(ДокОбъект[ИмяРеквизитаЗаказ]);
				if(true/*ИмяТабличнойЧастиПродукция = ""*/)
				{
					/*//сборка
*/
					/*ТекстЗапросаТЧДокумента = "		
			 |ВЫБРАТЬ 
			 |	ДокПогашенияПотребностей.Ссылка.ЗаказВыпуска			КАК ЗаказНаПроизводство,
			 |	ДокПогашенияПотребностей.Номенклатура 					КАК Номенклатура,
			 |	ДокПогашенияПотребностей.ХарактеристикаНоменклатуры 	КАК ХарактеристикаНоменклатуры,
			 |	ДокПогашенияПотребностей.ЕдиницаИзмерения				КАК ЕдиницаИзмерения,
			 |	ДокПогашенияПотребностей.Ссылка.Номенклатура			КАК Продукция, 
			 |	ДокПогашенияПотребностей.Ссылка.ХарактеристикаНоменклатуры	КАК ХарактеристикаПродукции,
			 |	ДокПогашенияПотребностей.Ссылка.Спецификация 			КАК Спецификация,
			 |	ДокПогашенияПотребностей.Ссылка.Подразделение 			КАК Подразделение,
			 |	ДокПогашенияПотребностей.Количество 					КАК ДокКоличествоЕдиницыДокумента,
			 |	ВЫРАЗИТЬ(ДокПогашенияПотребностей.Количество * ДокПогашенияПотребностей.ЕдиницаИзмерения.Коэффициент
			 |			/ ДокПогашенияПотребностей.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Число(15,3)) КАК ДокКоличество,
			 |	0 														КАК ПотребностьКоличествоЕдиницыДокумента,
		 	 |	0 														КАК ПотребностьКоличество,
			 |	NULL 													КАК ВидВоспроизводства
			 |ПОМЕСТИТЬ ВременнаяТаблицаДокумента
			 |ИЗ 
			 |		Документ." + ВидДокумента + ".Комплектующие КАК ДокПогашенияПотребностей
			 |	ГДЕ
			 |		ДокПогашенияПотребностей.Ссылка = &ДокСсылка
			 |";*/
				}
			}
			//ГраницаОстатков = Новый Граница(ДокОбъект.Дата, ВидГраницы.Включая);
			//ЗапросТЧДокумента = новый Запрос;
			//ЗапросТЧДокумента.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//ТекстЗапросаТЧДокумента = СтрЗаменить(ТекстЗапросаТЧДокумента,"%ПолеЗаказ%","ДокПогашенияПотребностей."+ИмяРеквизитаЗаказ);
			if(true/*ВидДокумента = "АктОбОказанииПроизводственныхУслуг"*/)
			{
				//ТекстЗапросаТЧДокумента = СтрЗаменить(ТекстЗапросаТЧДокумента,"%ПолеХарактеристикаПродукции%","&ПустаяХарактеристикаПродукции");
				//ЗапросТЧДокумента.УстановитьПараметр("ПустаяХарактеристикаПродукции", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
			}
			//ЗапросТЧДокумента.Текст = ТекстЗапросаТЧДокумента;
			//ЗапросТЧДокумента.УстановитьПараметр("ДокСсылка",          ДокОбъект.Ссылка);
			//ЗапросТЧДокумента.УстановитьПараметр("ПустЗаказ",          Документы.ЗаказНаПроизводство.ПустаяСсылка());
			//ЗапросТЧДокумента.Выполнить();
			//Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(ДокОбъект);
			if(true/*глЗначениеПеременной("ИспользоватьБлокировкуДанных")*/)
			{
				/*СтруктураПараметров = Новый Структура(
		 "ТипТаблицы,ИмяТаблицы,ИсточникДанных,ИмяВременнойТаблицы"
		 ,"РегистрНакопления"
		 ,"ПотребностиЗаказовНаПроизводство"
		 ,МенеджерВременныхТаблиц
		 ,"ВременнаяТаблицаДокумента");*/
				//СтруктураЗначенийБлокировки = Новый Структура("Период", ДокОбъект.Дата);
				/*СтруктураИсточникаДанных = Новый Структура(
		 "ЗаказНаПроизводство,Номенклатура,ХарактеристикаНоменклатуры, Продукция, ХарактеристикаПродукции"
		 ,"ЗаказНаПроизводство"
		 ,"Номенклатура"
		 ,"ХарактеристикаНоменклатуры"
		 ,"Продукция"
		 ,"ХарактеристикаПродукции"
		 );*/
				//ОбщегоНазначения.УстановитьУправляемуюБлокировку(СтруктураПараметров, СтруктураЗначенийБлокировки, СтруктураИсточникаДанных, Ложь, Заголовок);
			}
			/*//запрос для формирования движений
*/
			/*ТекстЗапроса = 
		"ВЫБРАТЬ 
		 |	ВложенныйЗапрос.ЗаказНаПроизводство 					КАК ЗаказНаПроизводство,
		 |	ВложенныйЗапрос.Номенклатура 							КАК Номенклатура,
		 |	ВложенныйЗапрос.ХарактеристикаНоменклатуры 				КАК ХарактеристикаНоменклатуры,
		 |	ВложенныйЗапрос.ЕдиницаИзмерения 						КАК ЕдиницаИзмерения,
		 |	ВложенныйЗапрос.Продукция 								КАК Продукция, 
		 |	ВложенныйЗапрос.ХарактеристикаПродукции 				КАК ХарактеристикаПродукции,
		 |	ВложенныйЗапрос.Спецификация 							КАК Спецификация,
		 |	ВложенныйЗапрос.Подразделение 							КАК Подразделение,
		 |	ВложенныйЗапрос.Номенклатура.ВестиУчетПоХарактеристикам КАК НоменклатураВестиУчетПоХарактеристикам,
		 |	ВложенныйЗапрос.Продукция.ВестиУчетПоХарактеристикам    КАК ПродукцияВестиУчетПоХарактеристикам,
         |	ВложенныйЗапрос.ВидВоспроизводства 						КАК ВидВоспроизводства,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ЗаказНаПроизводство)      КАК ЗаказНаПроизводствоПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Номенклатура)             КАК НоменклатураПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ЕдиницаИзмерения)         КАК ЕдиницаИзмеренияПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Продукция)                КАК ПродукцияПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ХарактеристикаПродукции)  КАК ХарактеристикаПродукцииПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Спецификация) 			КАК СпецификацияПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.Подразделение)            КАК ПодразделениеПред,
		 |	ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ВидВоспроизводства) 		КАК ВидВоспроизводстваПред,
		 |	ЕстьNULL(ВложенныйЗапрос.КолДокументЕдиницыДокумента,0)	КАК КолДокументЕдиницыДокумента,
		 |	ЕстьNULL(ВложенныйЗапрос.КолДокумент,0)					КАК КолДокумент,
		 |	ЕстьNULL(ВложенныйЗапрос.КолПотребностиЕдиницыДокумента,0) КАК КолПотребностиЕдиницыДокумента,
		 |	ЕстьNULL(ВложенныйЗапрос.КолПотребности,0) 				КАК КолПотребности
         |ИЗ
		 |(ВЫБРАТЬ
		 //сгруппированное объединение запросов
		 |	ОбъединенныйЗапрос.ЗаказНаПроизводство 							КАК ЗаказНаПроизводство,
		 |	ОбъединенныйЗапрос.Номенклатура 								КАК Номенклатура,
		 |	ОбъединенныйЗапрос.ХарактеристикаНоменклатуры 					КАК ХарактеристикаНоменклатуры,
		 |	ОбъединенныйЗапрос.ЕдиницаИзмерения 							КАК ЕдиницаИзмерения,
		 |	ОбъединенныйЗапрос.Продукция 									КАК Продукция, 
		 |	ОбъединенныйЗапрос.ХарактеристикаПродукции 						КАК ХарактеристикаПродукции,
		 |	ОбъединенныйЗапрос.Спецификация 								КАК Спецификация,
		 |	ОбъединенныйЗапрос.Подразделение 								КАК Подразделение,
		 |	ОбъединенныйЗапрос.ВидВоспроизводства 							КАК ВидВоспроизводства,
		 |	СУММА(ОбъединенныйЗапрос.ДокКоличествоЕдиницыДокумента)			КАК КолДокументЕдиницыДокумента,
		 |	СУММА(ОбъединенныйЗапрос.ДокКоличество)							КАК КолДокумент,
		 |	СУММА(ОбъединенныйЗапрос.ПотребностьКоличествоЕдиницыДокумента) КАК КолПотребностиЕдиницыДокумента,
		 |	СУММА(ОбъединенныйЗапрос.ПотребностьКоличество) 				КАК КолПотребности
		 |ИЗ
		 |(
		 |//табличная часть документа
		 |ВЫБРАТЬ
		 |	ЗаказНаПроизводство,
		 |	Номенклатура,
		 |	ХарактеристикаНоменклатуры,
		 |	ЕдиницаИзмерения,
		 |	Продукция, 
		 |	ХарактеристикаПродукции,
		 |	Спецификация,
		 |	Подразделение,
		 |	ДокКоличествоЕдиницыДокумента,
		 |	ДокКоличество,
		 |	ПотребностьКоличествоЕдиницыДокумента,
		 |	ПотребностьКоличество,
		 |	ВидВоспроизводства
		 |ИЗ ВременнаяТаблицаДокумента 
         |ОБЪЕДИНИТЬ ВСЕ
		 |//регистр ПотребностиЗаказовНаПроизводство
		 |ВЫБРАТЬ
		 |	РегПотребности.ЗаказНаПроизводство					КАК ЗаказНаПроизводство,
		 |	РегПотребности.Номенклатура 						КАК Номенклатура,
		 |	РегПотребности.ХарактеристикаНоменклатуры 			КАК ХарактеристикаНоменклатуры,
		 |	РегПотребности.ЕдиницаИзмерения 					КАК ЕдиницаИзмерения,
		 |	РегПотребности.Продукция 							КАК Продукция, 
		 |	РегПотребности.ХарактеристикаПродукции 				КАК ХарактеристикаПродукции,
		 |	РегПотребности.Спецификация 						КАК Спецификация,
		 |	РегПотребности.Подразделение 						КАК Подразделение,
		 |	0 													КАК ДокКоличествоЕдиницыДокумента,
		 |	0 													КАК ДокКоличество,
		 |	ВЫРАЗИТЬ(РегПотребности.КоличествоОстаток * РегПотребности.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
		 |		/ РегПотребности.ЕдиницаИзмерения.Коэффициент КАК Число(15,3))
		 |														КАК ПотребностьКоличествоЕдиницыДокумента,
		 |	РегПотребности.КоличествоОстаток 					КАК ПотребностьКоличество,
	 	 |	РегПотребности.ВидВоспроизводства 					КАК ВидВоспроизводства
         |ИЗ
		 |  РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки(&КонГраница, ЗаказНаПроизводство В (&МассивЗаказов)) КАК РегПотребности
		 |ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки
		 |) КАК ОбъединенныйЗапрос
		 |СГРУППИРОВАТЬ ПО
		 |	ОбъединенныйЗапрос.ЗаказНаПроизводство,
		 |	ОбъединенныйЗапрос.Номенклатура,
		 |	ОбъединенныйЗапрос.ХарактеристикаНоменклатуры,
		 |	ОбъединенныйЗапрос.ЕдиницаИзмерения,
		 |	ОбъединенныйЗапрос.Продукция, 
		 |	ОбъединенныйЗапрос.ХарактеристикаПродукции,
		 |	ОбъединенныйЗапрос.Спецификация,
		 |	ОбъединенныйЗапрос.Подразделение,
		 |	ОбъединенныйЗапрос.ВидВоспроизводства
		 |) КАК ВложенныйЗапрос
		 |ИТОГИ
		 |	СУММА(КолДокументЕдиницыДокумента),
		 |	СУММА(КолДокумент),
		 |	СУММА(КолПотребностиЕдиницыДокумента),
		 |	СУММА(КолПотребности)
		 |ПО
		 |	ЗаказНаПроизводство,
		 |	Номенклатура,ХарактеристикаНоменклатуры, 
		 |	ЕдиницаИзмерения, Продукция, ХарактеристикаПродукции, Спецификация
		 |";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			//Запрос.УстановитьПараметр("КонДата",            ДокОбъект.Дата);
			//Запрос.УстановитьПараметр("КонГраница",         ГраницаОстатков);
			//Запрос.УстановитьПараметр("МассивЗаказов",      МассивЗаказов);
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			//ЗапросОстаткиЗаказов = новый Запрос;
			/*ЗапросОстаткиЗаказов.Текст = "ВЫБРАТЬ 
	|РегЗаказы.ЗаказНаПроизводство 			КАК ЗаказНаПроизводство,
	|РегЗаказы.Номенклатура 				КАК Продукция,
	|РегЗаказы.ХарактеристикаНоменклатуры 	КАК ХарактеристикаПродукции,
	|РегЗаказы.КоличествоОстаток			КАК КолОстаток
    |ИЗ РегистрНакопления.ЗаказыНаПроизводство.Остатки(&КонГраница, ЗаказНаПроизводство В (&МассивЗаказов)) КАК РегЗаказы
	|ИТОГИ 
	|	СУММА(КолОстаток)
	|ПО
	|	ЗаказНаПроизводство";*/
			//ЗапросОстаткиЗаказов.УстановитьПараметр("КонГраница",    ГраницаОстатков);
			//ЗапросОстаткиЗаказов.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
			//РезультатЗапросаОстаткиЗаказов = ЗапросОстаткиЗаказов.Выполнить();
			//ВыборкаОстаткиЗаказовНаПроизводство = РезультатЗапросаОстаткиЗаказов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			//ТабДвижений = НаборДвижений.ВыгрузитьКолонки();
			//ОбходПоЗаказам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ЗаказНаПроизводство");
			while(true/*ОбходПоЗаказам.Следующий()*/)
			{
				//флЗаказЗакрыт = Истина;
				//ВыборкаОстаткиПродукцииПоЗаказу = Неопределено;
				if(true/*ВыборкаОстаткиЗаказовНаПроизводство.НайтиСледующий(ОбходПоЗаказам.ЗаказНаПроизводство, "ЗаказНаПроизводство")*/)
				{
					//флЗаказЗакрыт = ВыборкаОстаткиЗаказовНаПроизводство.КолОстаток <= 0;
					//ВыборкаОстаткиПродукцииПоЗаказу = ВыборкаОстаткиЗаказовНаПроизводство.Выбрать();
				}
				//СтрОшибка = "Превышение потребности по заказу на производство: " + ОбходПоЗаказам.ЗаказНаПроизводствоПред;
				//СообщитьОбОшибке = Ложь;
				//ОбходНоменклатура = ОбходПоЗаказам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");
				while(true/*ОбходНоменклатура.Следующий()*/)
				{
					//ОбходХарактеристика = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ХарактеристикаНоменклатуры");
					while(true/*ОбходХарактеристика.Следующий()*/)
					{
						//ОбходЕдиница = ОбходХарактеристика.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ЕдиницаИзмерения");
						while(true/*ОбходЕдиница.Следующий()*/)
						{
							//ОбходПродукция = ОбходЕдиница.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Продукция");
							while(true/*ОбходПродукция.Следующий()*/)
							{
								//ОбходХарактеристикаПродукции = ОбходПродукция.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ХарактеристикаПродукции");
								while(true/*ОбходХарактеристикаПродукции.Следующий()*/)
								{
									/*//Проверка - выполнен ли заказ на производство для данной продукции и характеристики
*/
									//флВсяПродукцияПоЗаказуВыпущена = Ложь;
									if(true/*НЕ флЗаказЗакрыт И ЗначениеЗаполнено(ОбходХарактеристикаПродукции.Продукция)*/)
									{
										//флВсяПродукцияПоЗаказуВыпущена = Истина;
										/*СтруктураПоиска = Новый Структура	("Продукция, ХарактеристикаПродукции",
																	ОбходХарактеристикаПродукции.Продукция,
																	ОбходХарактеристикаПродукции.ХарактеристикаПродукции);*/
										if(true/*ВыборкаОстаткиПродукцииПоЗаказу.НайтиСледующий(СтруктураПоиска)*/)
										{
											//флВсяПродукцияПоЗаказуВыпущена = ВыборкаОстаткиПродукцииПоЗаказу.КолОстаток<=0;
										}
										//ВыборкаОстаткиПродукцииПоЗаказу.Сбросить();
									}
									//Обход = ОбходХарактеристикаПродукции.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Спецификация");
									while(true/*Обход.Следующий()*/)
									{
										if(true/*Обход.КолДокумент <= 0 И НЕ (флЗаказЗакрыт ИЛИ флВсяПродукцияПоЗаказуВыпущена)*/)
										{
										}
										/*//проверяем достаточность потребностей которые указаны в документе
*/
										if(true/*Обход.КолДокумент > 0*/)
										{
											//НехваткаПотребностей = Обход.КолДокумент - Обход.КолПотребности;
											if(true/*НехваткаПотребностей>0*/)
											{
												//СтрОшибка = СтрОшибка + Символы.ПС + СоздатьСтрокуСообщения(Обход);
												//СообщитьОбОшибке = Истина;
											}
										}
										/*//погашаем потребность
*/
										if(true/*флЗаказЗакрыт ИЛИ флВсяПродукцияПоЗаказуВыпущена*/)
										{
											/*//если заказ в части продукции и характеристики продукции выполнен - закрываем всю потребность
*/
											//ВыборкаДетали = Обход.Выбрать(ОбходРезультатаЗапроса.Прямой);
											while(true/*ВыборкаДетали.Следующий()*/)
											{
												if(true/*ВыборкаДетали.КолПотребности <> 0*/)
												{
													//НоваяСтрока = ТабДвижений.Добавить();
													//НоваяСтрока.ЗаказНаПроизводство        = ВыборкаДетали.ЗаказНаПроизводство;
													//НоваяСтрока.Номенклатура               = ВыборкаДетали.Номенклатура;
													//НоваяСтрока.ХарактеристикаНоменклатуры = ВыборкаДетали.ХарактеристикаНоменклатуры;
													//НоваяСтрока.ЕдиницаИзмерения           = ВыборкаДетали.ЕдиницаИзмерения;
													//НоваяСтрока.Продукция                  = ВыборкаДетали.Продукция;
													//НоваяСтрока.ХарактеристикаПродукции    = ВыборкаДетали.ХарактеристикаПродукции;
													//НоваяСтрока.Подразделение              = ВыборкаДетали.Подразделение;
													//НоваяСтрока.ВидВоспроизводства         = ВыборкаДетали.ВидВоспроизводства;
													//НоваяСтрока.Спецификация               = ВыборкаДетали.Спецификация;
													//НоваяСтрока.Количество                 = ВыборкаДетали.КолПотребности;
												}
											}
										}
										/*//Если флЗаказЗакрыт Тогда
*/
									}
									/*//Пока Обход.Следующий() Цикл
*/
								}
								/*//Пока ОбходХарактеристикаПродукции.Следующий() Цикл
*/
							}
							/*//Пока ОбходПродукция.Следующий() Цикл
*/
						}
						/*//Пока ОбходЕдиница.Следующий() Цикл
*/
					}
					/*//Пока ОбходХарактеристика.Следующий() Цикл
*/
				}
				/*//Пока ОбходНоменклатура.Следующий() Цикл
*/
				if(true/*СообщитьОбОшибке*/)
				{
					//ОбщегоНазначения.СообщитьОбОшибке(СтрОшибка, Ложь, Заголовок);
				}
				//ВыборкаОстаткиЗаказовНаПроизводство.Сбросить();
			}
			/*//Пока ОбходПоЗаказам.Следующий() Цикл
*/
			//ТаблицыДанныхДокумента = Новый Структура;
			//ТаблицыДанныхДокумента.Вставить("Материалы", ТабДвижений);
			//ОбщегоНазначения.ЗаписатьТаблицыДокументаВРегистр(НаборДвижений, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, ДокОбъект.Дата);
		}
		// ВыполнитьПогашениеПотребностиЗаказаНаПроизводствоПоРаспределению()
		// Закрывает потребности на производство по исполненным заказам и выпущенной продукции/услуги
		// Вызывается при явном закрытии потребностей
		//

		public void ВыполнитьПогашениеПотребностиИсполненныхЗаказовНаПроизводство(/*ДокОбъект, ВидДокумента, ИмяТабличнойЧастиПродукция, ИмяРеквизитаЗаказ*/)
		{
			//НаборДвижений = ДокОбъект.Движения.ПотребностиЗаказовНаПроизводство;
			if(true/*ИмяТабличнойЧастиПродукция=""*/)
			{
				//МассивЗаказов = новый Массив;
				//МассивЗаказов.Добавить(ДокОбъект[ИмяРеквизитаЗаказ]);
			}
			//ГраницаОстатков = Новый Граница(ДокОбъект.Дата, ВидГраницы.Включая);
			/*//Заполним временную таблицу для установки управляемых блокировок			   
*/
			if(true/*глЗначениеПеременной("ИспользоватьБлокировкуДанных")*/)
			{
				//Заголовок = ОбщегоНазначения.ПредставлениеДокументаПриПроведении(ДокОбъект);
				//МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
				/*Запрос = новый Запрос("ВЫБРАТЬ Ссылка КАК ЗаказНаПроизводство 
		|ПОМЕСТИТЬ ВременнаяТаблицаДокумента
		|ИЗ
		|	Документ.ЗаказНаПроизводство
		|ГДЕ Ссылка В (&МассивЗаказов)
		|");*/
				//Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
				//Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
				//Запрос.Выполнить();
				/*СтруктураПараметров = Новый Структура(
			"ТипТаблицы,ИмяТаблицы,ИсточникДанных,ИмяВременнойТаблицы"
			,"РегистрНакопления"
			,"ПотребностиЗаказовНаПроизводство"
			,МенеджерВременныхТаблиц
			,"ВременнаяТаблицаДокумента");*/
				//СтруктураЗначенийБлокировки = Новый Структура("Период", ДокОбъект.Дата);
				/*СтруктураИсточникаДанных = Новый Структура(
			"ЗаказНаПроизводство"
			,"ЗаказНаПроизводство"
			);*/
				//ОбщегоНазначения.УстановитьУправляемуюБлокировку(СтруктураПараметров,СтруктураЗначенийБлокировки,СтруктураИсточникаДанных, Ложь, Заголовок);
			}
			//ТабДвижений = НаборДвижений.ВыгрузитьКолонки();
			//Запрос = Новый Запрос;
			/*ТекстЗапроса = "ВЫБРАТЬ 
	               |	ПотребностиЗаказовНаПроизводствоОстатки.ЗаказНаПроизводство,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.Номенклатура,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.ХарактеристикаНоменклатуры,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.Продукция,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.ХарактеристикаПродукции,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.ЕдиницаИзмерения,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.ВидВоспроизводства,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.Спецификация,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.Подразделение,
	               |	ПотребностиЗаказовНаПроизводствоОстатки.КоличествоОстаток 						КАК Количество,
				   |	ЕСТЬNULL(ЗаказыНаПроизводствоОстатки.КоличествоОстаток, 0) 						КАК КоличествоПродукцииПоЗаказу
	               |ИЗ
	               |	РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки(
	               |			&КонГраница,
	               |			ЗаказНаПроизводство В (&МассивЗаказов)) 								КАК ПотребностиЗаказовНаПроизводствоОстатки
				   |ЛЕВОЕ СОЕДИНЕНИЕ
	               |	РегистрНакопления.ЗаказыНаПроизводство.Остатки(
				   |			&КонГраница, 
				   |			ЗаказНаПроизводство В (&МассивЗаказов)) 								КАК ЗаказыНаПроизводствоОстатки
				   |	ПО 
				   |		ЗаказыНаПроизводствоОстатки.ЗаказНаПроизводство = ПотребностиЗаказовНаПроизводствоОстатки.ЗаказНаПроизводство И
				   |			(
				   |			ПотребностиЗаказовНаПроизводствоОстатки.Продукция = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ИЛИ
				   |				(ЗаказыНаПроизводствоОстатки.Номенклатура = ПотребностиЗаказовНаПроизводствоОстатки.Продукция И
				   |				ЗаказыНаПроизводствоОстатки.ХарактеристикаНоменклатуры = ПотребностиЗаказовНаПроизводствоОстатки.ХарактеристикаПродукции)
				   |			)
				   |ГДЕ ЕСТЬNULL(ЗаказыНаПроизводствоОстатки.КоличествоОстаток,0) = 0
	               |ДЛЯ ИЗМЕНЕНИЯ РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки";*/
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("ДатаОстатков",  ГраницаОстатков);
			//Запрос.УстановитьПараметр("КонГраница",    ГраницаОстатков);
			//Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
			//Результат = Запрос.Выполнить();
			if(true/*Результат.Пустой()*/)
			{
			}
			//Выборка = Результат.Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				//СтрокаДвижения = ТабДвижений.Добавить();
				//ЗаполнитьЗначенияСвойств(СтрокаДвижения, Выборка);
			}
			/*; 
	
	ТаблицыДанныхДокумента = Новый Структура;*/
			//ТаблицыДанныхДокумента.Вставить("Материалы", ТабДвижений);
			//ОбщегоНазначения.ЗаписатьТаблицыДокументаВРегистр(НаборДвижений, ВидДвиженияНакопления.Расход, ТаблицыДанныхДокумента, ДокОбъект.Дата);
		}
		// ВыполнитьПогашениеПотребностиИсполненныхЗаказовНаПроизводство()
		// Процедура выполняет движение по регистру ПотребностиЗаказовНаПроизводство
		// 	Если способ закрытия потребностей автоматический, то используется распределениее материалов
		// 	Если способ закрытия потребностей "Явно", то погашаются потребности только по исполненным заказам
		//
		// Параметры:
		//
		//  ДокОбъект 										- <ДокументОбъект>
		//  ВидДокумента									- <строка> - ВидДокумента документа
		//  ДопПараметры									- <Структура>
		//

		public void ВыполнитьПогашениеПотребностиЗаказаНаПроизводство(/*ДокОбъект, ВидДокумента, ДопПараметры = Неопределено*/)
		{
			/*// Значения по умолчанию
*/
			//ИмяРеквизитаЗаказ = "ЗаказВыпуска";
			//ИмяТабличнойЧастиПродукция = "Продукция";
			//СпособЗакрытияПотребностейЗаказовНаПроизводство = Перечисления.СпособыЗакрытияПотребностейЗаказовНаПроизводство.АвтоматическиПриРаспределении;
			//СтруктураШапкиДокумента = новый Структура;
			/*// Если переданы параметры, то получим их
*/
			if(true/*ДопПараметры <> Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ИмяРеквизитаЗаказ")*/)
				{
					//ИмяРеквизитаЗаказ = ДопПараметры.ИмяРеквизитаЗаказ;
				}
				if(true/*ДопПараметры.Свойство("ИмяТабличнойЧастиПродукция")*/)
				{
					//ИмяТабличнойЧастиПродукция = ДопПараметры.ИмяТабличнойЧастиПродукция;
				}
				if(true/*ДопПараметры.Свойство("СтруктураШапкиДокумента")*/)
				{
					//СтруктураШапкиДокумента = ДопПараметры.СтруктураШапкиДокумента;
				}
				if(true/*ДопПараметры.Свойство("СпособЗакрытияПотребностейЗаказовНаПроизводство")*/)
				{
					//СпособЗакрытияПотребностейЗаказовНаПроизводство = ДопПараметры.СпособЗакрытияПотребностейЗаказовНаПроизводство;
				}
			}
			/*// Закроем потребности в зависимости от способа закрытия
*/
			if(true/*СпособЗакрытияПотребностейЗаказовНаПроизводство = Перечисления.СпособыЗакрытияПотребностейЗаказовНаПроизводство.АвтоматическиПриРаспределении*/)
			{
				//ВыполнитьПогашениеПотребностиЗаказаНаПроизводствоПоРаспределению(ДокОбъект, ВидДокумента, ИмяРеквизитаЗаказ, СтруктураШапкиДокумента, ИмяТабличнойЧастиПродукция);
			}
		}
		// ВыполнитьПогашениеПотребностиЗаказаНаПроизводство()
		// Заполняет переданную табличную часть по остаткам
		//
		// Параметры:
		//  ТабЧасть - табличная часть.
		//  ЗаказНаПроизводство - заказ на производство.
		//

		public void ЗаполнитьТабличнуюЧастьПродукцияПоОстаткамЗаказовНаПроизводство(/*ТабЧасть, ЗаказНаПроизводство, ДатаОстатков, ДопПараметры = Неопределено*/)
		{
			/*ТекстЗапроса = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	РегЗаказыНаПроизводство.Номенклатура КАК Номенклатура,
		|	РегЗаказыНаПроизводство.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	ПРЕДСТАВЛЕНИЕ(РегЗаказыНаПроизводство.Номенклатура) КАК НоменклатураПред,
		|	ПРЕДСТАВЛЕНИЕ(РегЗаказыНаПроизводство.ХарактеристикаНоменклатуры) КАК ХарактеристикаПред,
		|	РегЗаказыНаПроизводство.Номенклатура.ВестиУчетПоХарактеристикам КАК ВестиУчетПоХарактеристикам,
		|	РегЗаказыНаПроизводство.КоличествоОстаток КАК Заказано,
		|	0 КАК Размещено,
		|	NULL КАК ЗаказПокупателя,
		|	РегЗаказыНаПроизводство.ВидВоспроизводства КАК ВидВоспроизводства,
		|	РегЗаказыНаПроизводство.Спецификация КАК Спецификация,
		|	РегЗаказыНаПроизводство.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
		|	РегЗаказыНаПроизводство.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
		|	РегЗаказыНаПроизводство.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЕдиницаХраненияОстатковКоэффициент

		|ИЗ
		|	РегистрНакопления.ЗаказыНаПроизводство.Остатки(&ДатаОстатков, ЗаказНаПроизводство = &ПроизвЗаказ) КАК РегЗаказыНаПроизводство
		|			
		|ОБЪЕДИНИТЬ ВСЕ
		|			
		|ВЫБРАТЬ
		|	РегРазмещение.Номенклатура,
		|	РегРазмещение.ХарактеристикаНоменклатуры,
		|	ПРЕДСТАВЛЕНИЕ(РегРазмещение.Номенклатура) КАК НоменклатураПред,
		|	ПРЕДСТАВЛЕНИЕ(РегРазмещение.ХарактеристикаНоменклатуры) КАК ХарактеристикаПред,
		|	РегРазмещение.Номенклатура.ВестиУчетПоХарактеристикам КАК ВестиУчетПоХарактеристикам,
		|	0,
		|	РегРазмещение.КоличествоОстаток,
		|	РегРазмещение.ЗаказПокупателя,
		|	NULL,
		|	NULL,
		|	NULL,
		|	NULL,
		|	РегРазмещение.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЕдиницаХраненияОстатковКоэффициент

		|ИЗ
		|	РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаОстатков
		|		,
		|		ТоварТара = &ТоварТара
		|			И ЗаказПоставщику = &ПроизвЗаказ) КАК РегРазмещение
		|
		|УПОРЯДОЧИТЬ ПО
		|	Заказано УБЫВ,
		|	Размещено УБЫВ
		|ИТОГИ
		|	СУММА(Заказано),
		|	СУММА(Размещено)
		|ПО
		|	Номенклатура,
		|	ХарактеристикаНоменклатуры
		|";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("ПроизвЗаказ", ЗаказНаПроизводство);
			//Запрос.УстановитьПараметр("ТоварТара",   Перечисления.ТоварТара.Товар);
			//Запрос.УстановитьПараметр("ДатаОстатков",   ДатаОстатков);
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			//ОтрицательноеКоличество = Ложь;
			if(true/*ДопПараметры <> Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ОтрицательноеКоличество")*/)
				{
					//ОтрицательноеКоличество = ДопПараметры.ОтрицательноеКоличество;
				}
			}
			//МассивОстатков    = Новый Массив;
			//СоответствиеСтрок = Новый Соответствие;
			//ТекстЗаказ = "Размещение под заказ: " + ОбщегоНазначения.СформироватьЗаголовокДокумента(ЗаказНаПроизводство) + " превышает остаток по данному заказу.";
			//ФлагЕстьОшибкаРазмещения = Ложь;
			//ОбходНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ОбходНоменклатура.Следующий()*/)
			{
				//ОбходХарактеристика = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ОбходХарактеристика.Следующий()*/)
				{
					//ТекстСтр = "";
					//ФлагЕстьОшибка = Ложь;
					if(true/*ОбходХарактеристика.Размещено - ОбходХарактеристика.Заказано > 0*/)
					{
						/*ТекстЗаказ = ТекстЗаказ + Символы.ПС + "Продукция: """ + ОбходНоменклатура.НоменклатураПред + """ " +
						?(ОбходНоменклатура.ВестиУчетПоХарактеристикам,
							?(ПустаяСтрока(ОбходХарактеристика.ХарактеристикаПред),
								"<Характеристика не задана>",
								"Характеристика: """ + ОбходХарактеристика.ХарактеристикаПред), "") + """" +
						Символы.ПС + "Всего заказано: " + ОбходХарактеристика.Заказано + " размещено: " + ОбходХарактеристика.Размещено +
							" Превышение размещения над заказом: " + (ОбходХарактеристика.Размещено - ОбходХарактеристика.Заказано);*/
						//ФлагЕстьОшибка = Истина;
					}
					//МассивОстатков.Очистить();
					//Обход = ОбходХарактеристика.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					while(true/*Обход.Следующий()*/)
					{
						/*// Детальные записи. В связи с упорядочиванием первыми должны располагаться записи
*/
						/*// из регистра ЗаказыНаПроизводство         (признак поле ЗаказПокупателя == NULL), далее
*/
						/*// из регистра РазмещениеЗаказовПокупателей (признак поле ЗаказПокупателя <> NULL)
*/
						/*// Алгоритм обхода следующий:
*/
						/*//		Вначале переносим в документ строки (по сути остатки) из регистра ЗаказыНаПроизводство и запоминаем
*/
						/*//		их (строки) в массиве. Далее при наличии строк с указанным заказом (размещением)
*/
						/*//		пытаемся использовать строки из массива строк с пустым заказом (размещением). Если нет таких строк
*/
						/*//		выдаем сообщение о превышении размещения по данному заказу на производство остаткам по этому заказу.
*/
						if(true/*Обход.ЗаказПокупателя = NULL*/)
						{
							/*// Это строка с остатком. Добавляем в документ
*/
							//НоваяСтрока = ТабЧасть.Добавить();
							//НоваяСтрока.Номенклатура               = Обход.Номенклатура;
							//НоваяСтрока.ХарактеристикаНоменклатуры = Обход.ХарактеристикаНоменклатуры;
							//НоваяСтрока.Спецификация       = Обход.Спецификация;
							//НоваяСтрока.ВидВоспроизводства = Обход.ВидВоспроизводства;
							if(true/*Обход.ЕдиницаИзмерения = null*/)
							{
								//НоваяСтрока.ЕдиницаИзмерения   = Обход.Номенклатура.ЕдиницаХраненияОстатков;
							}
							//НоваяСтрока.Коэффициент        = Обход.Коэффициент;
							if(true/*Обход.ЕдиницаХраненияОстатковКоэффициент = null или Обход.Коэффициент = null*/)
							{
								//НоваяСтрока.Количество         = Обход.Заказано;
							}
							//МассивОстатков.Добавить(НоваяСтрока);
							//СоответствиеСтрок.Вставить(НоваяСтрока);
						}
					}
					if(true/*ФлагЕстьОшибка*/)
					{
						//ТекстЗаказ = ТекстЗаказ + ТекстСтр + Символы.ПС;
						//ФлагЕстьОшибкаРазмещения = ФлагЕстьОшибкаРазмещения ИЛИ ФлагЕстьОшибка;
					}
				}
				//;;
			}
			/*// Если требовалось отрицательное количество изменим знак результата
*/
			if(true/*ОтрицательноеКоличество*/)
			{
			}
			if(true/*ФлагЕстьОшибкаРазмещения*/)
			{
				//Сообщить(ТекстЗаказ, СтатусСообщения.Внимание);
			}
		}
		// ЗаполнитьТабличнуюЧастьПоОстаткамВнутреннийЗаказ()
		// Процедура заполняет таб. часть по потребностям.
		//

		public void ЗаполнитьТабличнуюЧастьПоПотребностямЗаказаНаПроизводство(/*ТабЧасть, ЗаказНаПроизводство, ДопПараметры = Неопределено*/)
		{
			//ВидВоспроизводства = Неопределено;
			//ВернутьРезультатЗапроса = Ложь;
			//ИмяРеквЗаказТабЧасть = "ЗаказВыпуска";
			//ИмяЗаказРезерв = Неопределено;
			//Склад = Неопределено;
			//ИмяСпособСписанияОстатка = неопределено;
			//ОтборПродукция = неопределено;
			//ОтборХарактеристикаПродукции = неопределено;
			//ОтборПродукцияУслуга = неопределено;
			if(true/*ДопПараметры <> Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ВидВоспроизводства")*/)
				{
					//ВидВоспроизводства = ДопПараметры.ВидВоспроизводства;
				}
				if(true/*ДопПараметры.Свойство("ВернутьРезультатЗапроса")*/)
				{
					//ВернутьРезультатЗапроса = ДопПараметры.ВернутьРезультатЗапроса;
				}
				if(true/*ДопПараметры.Свойство("ИмяРеквЗаказТабЧасть")*/)
				{
					//ИмяРеквЗаказТабЧасть = ДопПараметры.ИмяРеквЗаказТабЧасть;
				}
				if(true/*ДопПараметры.Свойство("ЗаказРезерв")*/)
				{
					/*// Если есть заказ резерв, то должен быть склад
*/
					if(true/*ДопПараметры.Свойство("Склад")*/)
					{
						if(true/*ЗначениеЗаполнено(ДопПараметры.Склад)*/)
						{
							//Склад = ДопПараметры.Склад;
							//ИмяЗаказРезерв = ДопПараметры.ЗаказРезерв;
						}
					}
				}
				if(true/*ДопПараметры.Свойство("СпособСписанияОстатка")*/)
				{
					/*// Если есть заказ резерв, то должен быть склад
*/
					if(true/*ДопПараметры.Свойство("Склад")*/)
					{
						if(true/*ЗначениеЗаполнено(ДопПараметры.Склад)*/)
						{
							//Склад = ДопПараметры.Склад;
							//ИмяСпособСписанияОстатка = ДопПараметры.СпособСписанияОстатка;
						}
					}
				}
				if(true/*ДопПараметры.Свойство("ОтборНоменклатураХарактеристика")*/)
				{
					//ОтборПродукция = ДопПараметры.ОтборНоменклатураХарактеристика.Продукция;
					//ОтборХарактеристикаПродукции = ДопПараметры.ОтборНоменклатураХарактеристика.ХарактеристикаПродукции;
				}
				if(true/*ДопПараметры.Свойство("ОтборПродукцияУслуга")*/)
				{
					//ОтборПродукцияУслуга = ДопПараметры.ОтборПродукцияУслуга;
				}
			}
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ПроизвЗаказ", ЗаказНаПроизводство);
			//ТекстОтбор = "";
			if(true/*ВидВоспроизводства <> Неопределено*/)
			{
				//ТекстОтбор = ТекстОтбор + " И ВидВоспроизводства В(&ВидВоспроизводства) ";
				//Запрос.УстановитьПараметр("ВидВоспроизводства", ВидВоспроизводства);
			}
			if(true/*ЗначениеЗаполнено(ОтборПродукция)*/)
			{
				//ТекстОтбор = ТекстОтбор + " И Продукция = &Продукция ";
				//Запрос.УстановитьПараметр("Продукция", ОтборПродукция);
				if(true/*ОтборХарактеристикаПродукции<>Неопределено*/)
				{
					//ТекстОтбор = ТекстОтбор + " И ХарактеристикаПродукции = &ХарактеристикаПродукции ";
					//Запрос.УстановитьПараметр("ХарактеристикаПродукции", ОтборХарактеристикаПродукции);
				}
			}
			if(true/*ЗначениеЗаполнено(ОтборПродукцияУслуга)*/)
			{
				//ТекстОтбор = ТекстОтбор + " И "+?(ОтборПродукцияУслуга,"","НЕ ")+"Продукция.Услуга";
			}
			/*ТекстЗапроса =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	РегПотребности.ЗаказНаПроизводство КАК " + ИмяРеквЗаказТабЧасть + ",
		|	РегПотребности.Номенклатура,
		|	РегПотребности.ХарактеристикаНоменклатуры,
		|	РегПотребности.Продукция,
		|	РегПотребности.ХарактеристикаПродукции,
		|	РегПотребности.ЕдиницаИзмерения,
		|	РегПотребности.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
		|	РегПотребности.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
		|	РегПотребности.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоэффициентХраненияОстатков,
		|	РегПотребности.Номенклатура.СтатьяЗатрат КАК СтатьяЗатрат,
		|	РегПотребности.Спецификация,
		|	РегПотребности.Подразделение,
		|	РегПотребности.ВидВоспроизводства,
		|	РегПотребности.КоличествоОстаток КАК Количество
		|	//ДОПОЛНЕНИЕ_Резервы , ЕСТЬNULL(РегРезервы.КоличествоОстаток, 0) КАК КоличествоРезерв
		|	//ДОПОЛНЕНИЕ_ЗаказРезерв , РегРезервы.ДокументРезерва КАК " + ИмяЗаказРезерв + "
		|	//ДОПОЛНЕНИЕ_СпособСписания , ВЫБОР КОГДА ЕСТЬNULL(РегРезервы.КоличествоОстаток, 0)>0 Тогда &ИзРезерва ИНАЧЕ &СоСклада КОНЕЦ КАК " + ИмяСпособСписанияОстатка + "
		|ИЗ
		|	РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки(, ЗаказНаПроизводство В (&ПроизвЗаказ) " + ТекстОтбор + ") КАК РегПотребности
		|   //ДОПОЛНЕНИЕ_Резервы ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(,ДокументРезерва В (&ПроизвЗаказ) И Склад = &Склад) КАК РегРезервы
		|   //ДОПОЛНЕНИЕ_Резервы ПО РегРезервы.Номенклатура = РегПотребности.Номенклатура
		|	//ДОПОЛНЕНИЕ_Резервы И РегРезервы.ХарактеристикаНоменклатуры = РегПотребности.ХарактеристикаНоменклатуры
		|	//ДОПОЛНЕНИЕ_Резервы И РегРезервы.КоличествоОстаток > 0
		|ГДЕ РегПотребности.КоличествоОстаток>0";*/
			if(true/*ИмяЗаказРезерв <> Неопределено ИЛИ ИмяСпособСписанияОстатка<>неопределено*/)
			{
				//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"//ДОПОЛНЕНИЕ_Резервы", "");
				//Запрос.УстановитьПараметр("Склад", Склад);
				if(true/*ИмяЗаказРезерв <> Неопределено*/)
				{
					//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"//ДОПОЛНЕНИЕ_ЗаказРезерв", "");
				}
				if(true/*ИмяСпособСписанияОстатка <> Неопределено*/)
				{
					//ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"//ДОПОЛНЕНИЕ_СпособСписания", "");
					//Запрос.УстановитьПараметр("СоСклада", Перечисления.СпособыСписанияОстаткаТоваров.СоСклада);
					//Запрос.УстановитьПараметр("ИзРезерва", Перечисления.СпособыСписанияОстаткаТоваров.ИзРезерва);
				}
			}
			//Запрос.Текст = ТекстЗапроса;
			if(true/*ВернутьРезультатЗапроса*/)
			{
				//ТабЧасть = Запрос.Выполнить();
			}
		}
		// ЗаполнитьТабличнуюЧастьПоПотребностямЗаказаНаПроизводство()
		// Заполняет переданную табличную часть по остаткам
		//
		// Параметры:
		//  ТабЧасть - табличная часть.
		//

		public void ЗаполнитьТабличнуюЧастьМатериалыПоОстаткам(/*ТабЧасть, ЗаказНаПроизводство, ДопПараметры = Неопределено*/)
		{
			/*ТекстЗапроса = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	1                                         КАК Источник,
		|	РегПотребности.Номенклатура               КАК Номенклатура,
		|	РегПотребности.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	РегПотребности.Продукция                  КАК Продукция,
		|	РегПотребности.ХарактеристикаПродукции    КАК ХарактеристикаПродукции,
		|	РегПотребности.ЕдиницаИзмерения           КАК ЕдиницаИзмерения,
		|	РегПотребности.ВидВоспроизводства         КАК ВидВоспроизводства,
		|	РегПотребности.Спецификация               КАК Спецификация,
		|	РегПотребности.Подразделение              КАК Подразделение,
		|	NULL                                      КАК Размещение,
		|	""""                                      КАК РазмещениеПред,
		|	РегПотребности.Номенклатура.ВестиУчетПоХарактеристикам   КАК НоменклатураВестиУчетПоХарактеристикам,
		|	РегПотребности.Продукция.ВестиУчетПоХарактеристикам      КАК ПродукцияВестиУчетПоХарактеристикам,
		|	ПРЕДСТАВЛЕНИЕ(РегПотребности.Номенклатура)               КАК НоменклатураПред,
		|	ПРЕДСТАВЛЕНИЕ(РегПотребности.Продукция)                  КАК ПродукцияПред,
		|	ПРЕДСТАВЛЕНИЕ(РегПотребности.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПред,
		|	ПРЕДСТАВЛЕНИЕ(РегПотребности.ХарактеристикаПродукции)    КАК ХарактеристикаПродукцииПред,
		|	ПРЕДСТАВЛЕНИЕ(РегПотребности.Подразделение)              КАК ПодразделениеПред,
		|	РегПотребности.ЕдиницаИзмерения.Коэффициент              КАК Коэффициент,
		|	РегПотребности.КоличествоОстаток          КАК КолПотребность,
		|	0                                         КАК КолРезерв
		|ИЗ
		|	РегистрНакопления.ПотребностиЗаказовНаПроизводство.Остатки(, ЗаказНаПроизводство = &ПроизвЗаказ) КАК РегПотребности
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	&ПорядокРезерва                       КАК Источник,
		|	РегРезервы.Номенклатура               КАК Номенклатура,
		|	РегРезервы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	NULL                                  КАК Продукция,
		|	NULL                                  КАК ХарактеристикаПродукции,
		|	NULL                                  КАК ЕдиницаИзмерения,
		|	NULL                                  КАК ВидВоспроизводства,
		|	NULL                                  КАК Спецификация,
		|	NULL                                  КАК Подразделение,
		|	РегРезервы.Склад                      КАК Размещение,
		|	ПРЕДСТАВЛЕНИЕ(РегРезервы.Склад)       КАК РазмещениеПред,
		|	РегРезервы.Номенклатура.ВестиУчетПоХарактеристикам   КАК НоменклатураВестиУчетПоХарактеристикам,
		|	Ложь                                                 КАК ПродукцияВестиУчетПоХарактеристикам,
		|	ПРЕДСТАВЛЕНИЕ(РегРезервы.Номенклатура)               КАК НоменклатураПред,
		|	""""                                                 КАК ПродукцияПред,
		|	ПРЕДСТАВЛЕНИЕ(РегРезервы.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПред,
		|	""""                                                 КАК ХарактеристикаПродукцииПред,
		|	""""                                                 КАК ПодразделениеПред,
		|	РегРезервы.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
		|	0                                     КАК КолПотребность,
		|	РегРезервы.КоличествоОстаток          КАК КолРезерв
		|ИЗ
		|	РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, ДокументРезерва = &ПроизвЗаказ) КАК РегРезервы
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	&ПорядокРазмещения                       КАК Источник,
		|	РегРазмещение.Номенклатура               КАК Номенклатура,
		|	РегРазмещение.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	NULL                                     КАК Продукция,
		|	NULL                                     КАК ХарактеристикаПродукции,
		|	NULL                                     КАК ЕдиницаИзмерения,
		|	NULL                                     КАК ВидВоспроизводства,
		|	NULL                                     КАК Спецификация,
		|	NULL                                     КАК Подразделение,
		|	РегРазмещение.ЗаказПоставщику            КАК Размещение,
		|	ПРЕДСТАВЛЕНИЕ(РегРазмещение.ЗаказПоставщику) КАК РазмещениеПред,
		|	РегРазмещение.Номенклатура.ВестиУчетПоХарактеристикам   КАК НоменклатураВестиУчетПоХарактеристикам,
		|	Ложь                                                    КАК ПродукцияВестиУчетПоХарактеристикам,
		|	ПРЕДСТАВЛЕНИЕ(РегРазмещение.Номенклатура)               КАК НоменклатураПред,
		|	""""                                                    КАК ПродукцияПред,
		|	ПРЕДСТАВЛЕНИЕ(РегРазмещение.ХарактеристикаНоменклатуры) КАК ХарактеристикаНоменклатурыПред,
		|	""""                                                    КАК ХарактеристикаПродукцииПред,
		|	""""                                                    КАК ПодразделениеПред,
		|	РегРазмещение.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
		|	0                                        КАК КолПотребность,
		|	РегРазмещение.КоличествоОстаток          КАК КолРезерв
		|ИЗ
		|	РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(
		|		,
		|		ЗаказПокупателя = &ПроизвЗаказ
		|			И ТоварТара = &ТоварТара) КАК РегРазмещение
		|
		|УПОРЯДОЧИТЬ ПО
		|	Источник
		|ИТОГИ
		|	СУММА(КолПотребность),
		|	СУММА(КолРезерв)
		|ПО
		|	Номенклатура,
		|	ХарактеристикаНоменклатуры
		|";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("ПроизвЗаказ", ЗаказНаПроизводство);
			//Запрос.УстановитьПараметр("ТоварТара",   Перечисления.ТоварТара.Товар);
			//СтратегияРезервирования = Константы.СтратегияАвторезервированияНоменклатурыПоЗаказам.Получить();
			//ПорядокРезерва = 2;
			if(true/*СтратегияРезервирования = Перечисления.СтратегииАвторезервированияНоменклатуры.СначалаВЗаказахПоставщикамПотомНаСкладах*/)
			{
				//Запрос.УстановитьПараметр("ПорядокРезерва",    3);
				//Запрос.УстановитьПараметр("ПорядокРазмещения", 2);
				//ПорядокРезерва = 3;
			}
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			//МетаРеквизиты = Метаданные.НайтиПоТипу(Тип(ТабЧасть)).Реквизиты;
			//ЕстьПолеВидВоспроизводства = МетаРеквизиты.Найти("ВидВоспроизводства") <> Неопределено;
			//ЕстьПолеПродукция          = МетаРеквизиты.Найти("Продукция")          <> Неопределено;
			//ЕстьПолеПодразделение      = МетаРеквизиты.Найти("Подразделение")      <> Неопределено;
			//ЕстьПолеСпецификация       = МетаРеквизиты.Найти("Спецификация")       <> Неопределено;
			//ОтрицательноеКоличество    = Ложь;
			//НеПоказыватьЗарезервированные = ложь;
			//ИмяРеквРазмещение = "Размещение";
			if(true/*ДопПараметры <> Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ИмяРеквРазмещение")*/)
				{
					//ИмяРеквРазмещение = ДопПараметры.ИмяРеквРазмещение;
				}
				if(true/*ДопПараметры.Свойство("ОтрицательноеКоличество")*/)
				{
					//ОтрицательноеКоличество = ДопПараметры.ОтрицательноеКоличество;
				}
				if(true/*ДопПараметры.Свойство("НеПоказыватьЗарезервированные")*/)
				{
					//НеПоказыватьЗарезервированные = ДопПараметры.НеПоказыватьЗарезервированные;
				}
			}
			//МассивОстатков    = Новый Массив;
			//СоответствиеСтрок = Новый Соответствие;
			//ТекстЗаказ = "Резерв (размещение) под заказ: " + ОбщегоНазначения.СформироватьЗаголовокДокумента(ЗаказНаПроизводство) + " превышает потребность по данному заказу.";
			//ФлагЕстьОшибкаРазмещения = Ложь;
			//ОбходНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ОбходНоменклатура.Следующий()*/)
			{
				//ОбходХарактеристика = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ОбходХарактеристика.Следующий()*/)
				{
					//ТекстСтр = "";
					//ФлагЕстьОшибка = Ложь;
					if(true/*ОбходХарактеристика.КолРезерв - ОбходХарактеристика.КолПотребность > 0*/)
					{
						/*ТекстЗаказ = ТекстЗаказ + Символы.ПС + "Потребность: """ + ОбходНоменклатура.НоменклатураПред + """ " +
						?(ОбходНоменклатура.НоменклатураВестиУчетПоХарактеристикам,
							?(ПустаяСтрока(ОбходХарактеристика.ХарактеристикаНоменклатурыПред),
								"<Характеристика не задана>",
								"Характеристика: """ + ОбходХарактеристика.ХарактеристикаНоменклатурыПред) + """", "") +
						Символы.ПС + "Требуется: " + ОбходХарактеристика.КолПотребность + " Резерв (размещение): " + ОбходХарактеристика.КолРезерв +
							" Превышение резерва (размещения) над потребностью: " + (ОбходХарактеристика.КолРезерв - ОбходХарактеристика.КолПотребность);*/
						//ФлагЕстьОшибка = Истина;
					}
					//МассивОстатков.Очистить();
					//Обход = ОбходХарактеристика.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					while(true/*Обход.Следующий()*/)
					{
						/*// Детальные записи. В связи с упорядочиванием первыми должны располагаться записи
*/
						/*// из регистра ЗаказыНаПроизводство         (признак поле Источник == 1), далее
*/
						/*// из регистра ТоварыВРезервеНаСкладах      (признак поле Источник == 2), далее
*/
						/*// из регистра РазмещениеЗаказовПокупателей (признак поле Источник == 3), далее
*/
						/*// Алгоритм обхода следующий:
*/
						/*//		Вначале переносим в документ строки (по сути остатки) из регистра ЗаказыНаПроизводство и запоминаем
*/
						/*//		их (строки) в массиве. Далее при наличии строк с указанным размещением (резервом)
*/
						/*//		пытаемся использовать строки из массива строк с размещением (резервом). Если нет таких строк
*/
						/*//		выдаем сообщение о превышении размещения (резерва) по данному заказу на производство потребностям по этому заказу.
*/
						/*//
*/
						if(true/*Обход.Источник = 1*/)
						{
							/*// Это строка с остатком. Добавляем в документ
*/
							//НоваяСтрока = ТабЧасть.Добавить();
							//НоваяСтрока.Номенклатура               = Обход.Номенклатура;
							//НоваяСтрока.ХарактеристикаНоменклатуры = Обход.ХарактеристикаНоменклатуры;
							//НоваяСтрока.ЕдиницаИзмерения   = Обход.ЕдиницаИзмерения;
							//НоваяСтрока.Коэффициент        = Обход.Коэффициент;
							//НоваяСтрока.Количество         = Окр(Обход.КолПотребность * Обход.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Обход.Коэффициент,3);
							/*//количество пересчитаем в единицы документа
*/
							if(true/*ЕстьПолеПродукция*/)
							{
								//НоваяСтрока.Продукция               = Обход.Продукция;
								//НоваяСтрока.ХарактеристикаПродукции = Обход.ХарактеристикаПродукции;
							}
							if(true/*ЕстьПолеСпецификация*/)
							{
								//НоваяСтрока.Спецификация       = Обход.Спецификация;
							}
							if(true/*ЕстьПолеПодразделение*/)
							{
								//НоваяСтрока.Подразделение      = Обход.Подразделение;
							}
							if(true/*ЕстьПолеВидВоспроизводства*/)
							{
								//НоваяСтрока.ВидВоспроизводства = Обход.ВидВоспроизводства;
							}
							//МассивОстатков.Добавить(НоваяСтрока);
							//СоответствиеСтрок.Вставить(НоваяСтрока);
						}
					}
					if(true/*ФлагЕстьОшибка*/)
					{
						//ТекстЗаказ = ТекстЗаказ + ТекстСтр + Символы.ПС;
						//ФлагЕстьОшибкаРазмещения = ФлагЕстьОшибкаРазмещения ИЛИ ФлагЕстьОшибка;
					}
				}
				//;;
			}
			if(true/*ОтрицательноеКоличество*/)
			{
			}
			if(true/*ФлагЕстьОшибкаРазмещения*/)
			{
				//флСообщать = истина;
				if(true/*ДопПараметры.Свойство("НеВыводитьСообщения")*/)
				{
					//флСообщать = не ДопПараметры.НеВыводитьСообщения;
				}
				if(true/*флСообщать*/)
				{
					//ОбщегоНазначения.Сообщение(ТекстЗаказ, СтатусСообщения.Внимание);
				}
			}
		}
		// ЗаполнитьТабличнуюЧастьМатериалыПоОстаткам()
		// Процедура заполняет таб.часть материалы возможными резервами и размещением
		//

		public void ЗаполнитьТабЧастьМатериалыВозможнымРазмещением(/*ДокОбъект, ТабЧасть, СтруктПараметров, МассивКУдалению*/)
		{
			//ИмяДокумента = ДокОбъект.Метаданные().Имя;
			//ПустоеРазмещение = ОбщегоНазначения.МассивПустыхЗначений(ДокОбъект.Метаданные().ТабличныеЧасти.Материалы.Реквизиты.Размещение.Тип);
			/*ТекстЗапроса_УжеРазмещено = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ДокКорректировка.Номенклатура 											КАК Номенклатура,
		|	ДокКорректировка.ХарактеристикаНоменклатуры 							КАК ХарактеристикаНоменклатуры,
		|	ДокКорректировка.НомерСтроки - 1 										КАК НомерСтрокиДокумента,
		|	ДокКорректировка.Размещение 											КАК Размещение,
		|	ДокКорректировка.Количество 
		|		* ДокКорректировка.Коэффициент
		|		/ ДокКорректировка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Количество
		|ИЗ
		|	Документ.%ИмяДокумента%.Материалы КАК ДокКорректировка
		|ГДЕ
		|	ДокКорректировка.Ссылка = &ДокСсылка
		|	И ДокКорректировка.Количество > 0
		|	И ДокКорректировка.Размещение НЕ В(&ПустоеРазмещение)
		|";*/
			//Запрос = Новый Запрос;
			//ТекстЗапроса_УжеРазмещено = СтрЗаменить(ТекстЗапроса_УжеРазмещено, "%ИмяДокумента%", ИмяДокумента);
			//Запрос.Текст = ТекстЗапроса_УжеРазмещено;
			//Запрос.УстановитьПараметр("ДокЗаказ",             СтруктПараметров.ЗаказНаПроизводство);
			//Запрос.УстановитьПараметр("ДокСсылка",            ДокОбъект.Ссылка);
			//Запрос.УстановитьПараметр("ПустоеРазмещение",     ПустоеРазмещение);
			//ТабУжеРазмещено = Запрос.Выполнить().Выгрузить();
			/*// В случае наличия ограничения по группам доступности складов, добавим в текст запроса соответствующее условие
*/
			//ГруппаДоступностиСкладов = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ГруппаДоступностиСкладов");
			if(true/*НЕ ЗначениеЗаполнено(ГруппаДоступностиСкладов)*/)
			{
				//ОтборПоСкладам = "";
				//ТекстФильтраПоСкладам = "";
			}
			/*ТекстЗапроса = "
		|ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ДокКорректировка.Номенклатура 										КАК Номенклатура,
		|	ДокКорректировка.ХарактеристикаНоменклатуры 						КАК ХарактеристикаНоменклатуры,
		|	1 																	КАК Источник,
		|	1 																	КАК Порядок,
		|	ДокКорректировка.НомерСтроки - 1 									КАК НомерСтрокиДокумента,
		|	NULL 																КАК Размещение,
		|	ДокКорректировка.Количество 										КАК ДокКоличество,
		|	ДокКорректировка.Коэффициент										КАК Коэффициент,
		|	ДокКорректировка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент 	КАК КоэффициентЕдиницыХранения,
		|	0 																	КАК КолОстатки,
		|	0 																	КАК ОстатокОрганизации
		|ИЗ
		|	Документ.%ИмяДокумента%.Материалы КАК ДокКорректировка
		|ГДЕ
		|	ДокКорректировка.Ссылка = &ДокСсылка
		|	И ДокКорректировка.Количество > 0
		|	И ДокКорректировка.Размещение В(&ПустоеРазмещение)
		|";*/
			if(true/*СтруктПараметров.Авторезервирование*/)
			{
				/*ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	РегСвободныеОстатки.Номенклатура,
		|	РегСвободныеОстатки.ХарактеристикаНоменклатуры,
		|	2,
		|	&ПорядокРезерва,
		|	0,
		|	РегСвободныеОстатки.Склад,
		|	0,
		|	0,
		|	РегСвободныеОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
		|	РегСвободныеОстатки.Количество,
		|	РегСвободныеОстатки.ОстатокОрганизации
		|ИЗ
		|	(ВЫБРАТЬ
		|		РегТовары.Склад КАК Склад,
		|		РегТовары.Номенклатура КАК Номенклатура,
		|		РегТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|		РегТовары.КоличествоОстаток - ЕСТЬNULL(РегРезервы.КоличествоОстаток, 0) - ЕСТЬNULL(РегТоварыКПередаче.КоличествоОстаток, 0) КАК Количество,
		|		ЕСТЬNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ОстатокОрганизации
		|	ИЗ
		|		РегистрНакопления.ТоварыНаСкладах.Остатки(
		|			,  Качество = &Новый И
		|			Номенклатура В
		|			    (ВЫБРАТЬ
		|			        Док.Номенклатура
		|			    ИЗ
		|			        Документ.%ИмяДокумента%.Материалы КАК Док
		|			    ГДЕ
		|			        Док.Ссылка = &ДокСсылка)
		|			%ГруппаДоступностиСкладов%) КАК РегТовары
		|
		|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
		|			,
		|			Номенклатура В
		|			    (ВЫБРАТЬ
		|			        Док.Номенклатура
		|			    ИЗ
		|			        Документ.%ИмяДокумента%.Материалы КАК Док
		|			    ГДЕ
		|			        Док.Ссылка = &ДокСсылка)
		|			%ГруппаДоступностиСкладов%) КАК РегРезервы
		|			ПО РегТовары.Склад = РегРезервы.Склад
		|				И РегТовары.Номенклатура = РегРезервы.Номенклатура
		|				И РегТовары.ХарактеристикаНоменклатуры = РегРезервы.ХарактеристикаНоменклатуры
		|
		|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(
		|			,  Качество = &Новый  И
		|			Номенклатура В
		|			    (ВЫБРАТЬ
		|			        Док.Номенклатура
		|			    ИЗ
		|			        Документ.%ИмяДокумента%.Материалы КАК Док
		|			    ГДЕ
		|			        Док.Ссылка = &ДокСсылка)
		|			%ГруппаДоступностиСкладов%) КАК РегТоварыКПередаче
		|			ПО РегТовары.Склад = РегТоварыКПередаче.Склад
		|				И РегТовары.Номенклатура = РегТоварыКПередаче.Номенклатура
		|				И РегТовары.ХарактеристикаНоменклатуры = РегТоварыКПередаче.ХарактеристикаНоменклатуры
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	РегистрНакопления.ТоварыОрганизаций.Остатки(, Организация = &Организация И Качество = &Новый) КАК ТоварыОрганизацийОстатки
		|ПО   РегТовары.Номенклатура               = ТоварыОрганизацийОстатки.Номенклатура
		|   И РегТовары.ХарактеристикаНоменклатуры = ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры
		|	ГДЕ
		|		РегТовары.КоличествоОстаток>0 И РегТовары.КоличествоОстаток - ЕСТЬNULL(РегРезервы.КоличествоОстаток, 0) - ЕСТЬNULL(РегТоварыКПередаче.КоличествоОстаток, 0) > 0) КАК РегСвободныеОстатки
		|";*/
			}
			if(true/*СтруктПараметров.Авторазмещение*/)
			{
				/*ТекстЗапроса = ТекстЗапроса + "
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	РегЗаказы.Номенклатура,
		|	РегЗаказы.ХарактеристикаНоменклатуры,
		|	3,
		|	&ПорядокРазмещения,
		|	0,
		|	РегЗаказы.Размещение,
		|	0,
		|	0,
		|	РегЗаказы.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
		|	РегЗаказы.Количество,
		|	0
		|ИЗ
		|	(ВЫБРАТЬ
		|		РегЗаказыОстатки.Номенклатура КАК Номенклатура,
		|		РегЗаказыОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|		РегЗаказыОстатки.Размещение КАК Размещение,
		|		РегЗаказыОстатки.Количество - ЕСТЬNULL(РегРазмещение.КоличествоОстаток, 0) КАК Количество
		|	ИЗ
		|		(ВЫБРАТЬ
		|			РегЗаказыПоставщикам.Номенклатура КАК Номенклатура,
		|			РегЗаказыПоставщикам.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|			РегЗаказыПоставщикам.ЗаказПоставщику КАК Размещение,
		|			РегЗаказыПоставщикам.КоличествоОстаток КАК Количество
		|		ИЗ
		|			РегистрНакопления.ЗаказыПоставщикам.Остатки(
		|				, ЗаказПоставщику.ДатаПоступления <= &ДатаОтгрузки
		|				И СтатусПартии В (&СтатусыПартииЗаказов)
		|				И ЗаказПоставщику.Организация = &Организация
		|				И Номенклатура В
		|				    (ВЫБРАТЬ
		|				        Док.Номенклатура
		|				    ИЗ
		|				        Документ.%ИмяДокумента%.Материалы КАК Док
		|				    ГДЕ
		|				        Док.Ссылка = &ДокСсылка)
		|	"+?(ЗначениеЗаполнено(ГруппаДоступностиСкладов)," И ЗаказПоставщику.Склад В " + ТекстФильтраПоСкладам,"")+"	) КАК РегЗаказыПоставщикам
		|		
		|		) КАК РегЗаказыОстатки
		|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(
		|			,
		|			Номенклатура В
		|			    (ВЫБРАТЬ
		|			        Док.Номенклатура
		|			    ИЗ
		|			        Документ.%ИмяДокумента%.Материалы КАК Док
		|			    ГДЕ
		|			        Док.Ссылка = &ДокСсылка)) КАК РегРазмещение
		|			ПО РегРазмещение.Номенклатура = РегЗаказыОстатки.Номенклатура
		|				И РегЗаказыОстатки.ХарактеристикаНоменклатуры = РегРазмещение.ХарактеристикаНоменклатуры
		|				И РегЗаказыОстатки.Размещение = РегРазмещение.ЗаказПоставщику
		|	ГДЕ
		|		РегЗаказыОстатки.Количество>0 И РегЗаказыОстатки.Количество - ЕСТЬNULL(РегРазмещение.КоличествоОстаток, 0) > 0) КАК РегЗаказы
		|";*/
			}
			/*ТекстЗапроса = ТекстЗапроса + "
		|
		|УПОРЯДОЧИТЬ ПО
		|	Порядок
		|
		|ИТОГИ
		|	СУММА(ДокКоличество),
		|	СУММА(КолОстатки),
		|	МАКСИМУМ(Коэффициент),
		|	МАКСИМУМ(КоэффициентЕдиницыХранения)
		|ПО
		|	Номенклатура,
		|	ХарактеристикаНоменклатуры
		|
		|";*/
			//ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%ГруппаДоступностиСкладов%", ОтборПоСкладам);
			//ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "%ИмяДокумента%", ДокОбъект.Метаданные().Имя);
			//СтатусыПартииЗаказов = Новый Массив;
			//СтатусыПартииЗаказов.Добавить(Перечисления.СтатусыПартийТоваров.Купленный);
			//СтатусыПартииЗаказов.Добавить(Перечисления.СтатусыПартийТоваров.Продукция);
			/*// Инициализация запроса
*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Организация = ДокОбъект.Организация;
			//ТипДокумента = ТипЗнч(ДокОбъект.Ссылка);
			if(true/*ТипДокумента = Тип("ДокументСсылка.ЗаказНаПроизводство")*/)
			{
				//ДатаИсполнения = ДокОбъект.ДатаИсполнения;
			}
			if(true/*НЕ ЗначениеЗаполнено(ДатаИсполнения)*/)
			{
				//ДатаИсполнения = ДокОбъект.Дата;
			}
			//Запрос.УстановитьПараметр("ДокЗаказ",             СтруктПараметров.ЗаказНаПроизводство);
			//Запрос.УстановитьПараметр("ДокСсылка",            ДокОбъект.Ссылка);
			//Запрос.УстановитьПараметр("ПустоеРазмещение",     ПустоеРазмещение);
			//Запрос.УстановитьПараметр("Организация",     	  Организация);
			//Запрос.УстановитьПараметр("Новый",                Справочники.Качество.Новый);
			//Запрос.УстановитьПараметр("СтатусыПартииЗаказов", СтатусыПартииЗаказов);
			//Запрос.УстановитьПараметр("ГруппаДоступностиСкладов", ГруппаДоступностиСкладов);
			//Запрос.УстановитьПараметр("ДатаОтгрузки",                ДатаИсполнения);
			if(true/*СтруктПараметров.СтратегияАвторезервированияПоЗаказам = Перечисления.СтратегииАвторезервированияНоменклатуры.СначалаВЗаказахПоставщикамПотомНаСкладах*/)
			{
				//Запрос.УстановитьПараметр("ПорядокРезерва",    3);
				//Запрос.УстановитьПараметр("ПорядокРазмещения", 2);
			}
			//РезультатЗапроса = Запрос.Выполнить();
			if(true/*РезультатЗапроса.Пустой()*/)
			{
			}
			/*// Получим права пользователя на превышение остатков по организации.
*/
			//ПраваНаПревышениеОстатковПоОрганизации = УправлениеДопПравамиПользователей.РазрешеноПревышениеОстаткаТоваровОрганизации(Организация);
			//МассивСтрок = Новый Массив;
			//ОбходНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ОбходНоменклатура.Следующий()*/)
			{
				//ОбходХарактеристика = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ОбходХарактеристика.Следующий()*/)
				{
					if(true/*ОбходХарактеристика.ДокКоличество = 0*/)
					{
						/*// Нет такой номенклатуры/характеристики в документе
*/
					}
					//МассивСтрок.Очистить();
					//Обход = ОбходХарактеристика.Выбрать();
					while(true/*Обход.Следующий()*/)
					{
						if(true/*Обход.Источник = 1*/)
						{
							/*// Это исходная строка документа
*/
							//МассивСтрок.Добавить(ТабЧасть[Обход.НомерСтрокиДокумента]);
						}
					}
					//;;
				}
				/*// Обход по Характеристикам номенклатуры
*/
			}
			/*// Обход по Номенклатуре
*/
		}
		// ЗаполнитьТабЧастьМатериалыВозможнымРазмещением()

		public void СформироватьОтчетАнализЗаказаНаПроизводство(/*ЗаказСсылка,флПроверятьЗаписьЗаказа=ложь, флСообщатьОбОшибках*/)
		{
			if(true/*флПроверятьЗаписьЗаказа И не УправлениеЗаказами.ДокументЗаписан(ЗаказСсылка,флСообщатьОбОшибках)*/)
			{
			}
			if(true/*НЕ ЗначениеЗаполнено(ЗаказСсылка) 
		ИЛИ ТипЗнч(ЗаказСсылка) <> Тип("ДокументСсылка.ЗаказНаПроизводство")*/)
			{
				//Предупреждение("Не выбран заказ!");
			}
			if(true/*не УправлениеЗаказами.ПравоДоступаКОтчету("АнализЗаказаНаПроизводство", флСообщатьОбОшибках)*/)
			{
			}
			//АнализЗаказа = Отчеты.АнализЗаказаНаПроизводство.Создать();
			//АнализЗаказа.ЗапретВыбораЗаказа = Истина;
			//АнализЗаказа.Заказ = ЗаказСсылка;
			//АнализЗаказаФорма = АнализЗаказа.ПолучитьФорму();
			//АнализЗаказаФорма.Открыть();
			//АнализЗаказа.ОбновитьОтчет(АнализЗаказаФорма.ЭлементыФормы.ТабДокумент);
		}
	}
}
